Does Open edX or Moodle meets my criteria? - moodle

I am comparing these two systems (Open edX and Moodle) if they meet my specific criteria.
I need to be able to override the functionality of the specific course in the way that I can have two courses with slightly different functionality. Following features should be mandatory for one course and should be disabled for another.
Allow course use for anonymous users
Certification is not required
Ability to use course in the random order
No requirement of the minimum hours
Use of notebook is optional
Another course should have a complete opposite of this features.
Course use for logged in users
Certification is required
Use of course in the strict order only
Minimum hours requirement
Use of notebook is mandatory
Do these features require coding or can be configured?

Do these features require coding or can be configured?
I can only speak for Moodle:
Allow course use for anonymous users: Possible without coding (in Moodle this is roughly called "to allow guests users to access an specific course").
Certification is not required: possible without coding (default behaviour).
Ability to use course in the random order: possible without coding (default behaviour).
No requirement of the minimum hours: possible without coding (default behaviour).
Use of notebook is optional: I'm not sure what do you mean by "notebook", if you mean a "blog" or a "forum", it is possible to allow its use optionally. If you mean something else, like an integration with Microsoft OneNote, that may be possible with plugins (but you should check if they exist). AFAIK There is no "notebook" in Moodle without plugins.
About the opposite needs you mentioned:
Course use for logged in users: Possible without coding (default behaviour).
Certification is required: If by "certification required" you mean that certification is a requirement to start a course this is definitely NOT possible without coding. The only Moodle solution that grants and tracks certification statuses over time is the official enterprise Moodle version (Moodle for Workplace: https://moodle.com/workplace/)
Use of course in the strict order only: NOT possible without coding. Again, the only Moodle solution that restricts courses access based in other course completion statuses is Moodle for Workplace.
Minimum hours requirement: AFAIK there is no standard time tracking solution that grants course completion based in the time expended within the course, so coding would be needed. There exist plugins that calculate times expended within courses or the platform.
Use of notebook is mandatory: Unless you download a "notebook" plugin that can be instanced as a course activity, I don't think you will be able to make its use mandatory.

Related

Can one prove that a website/service uses a specific open source codebase?

Suppose there is a deployed, public website/web service. They say it is an instance of an open source codebase. Can they prove it to me?
For example, take the useful www.s3auth.com, an HTTP auth gateway for S3 that lets you password protect static sites hosted on S3 (thanks to #yegor256). Yegor graciously open-sourced the service to assuage privacy concerns:
I made this software open source mostly to guarantee to my users that the server doesn't store their private data anywhere, but rather acts only as a pass-through service. As a result, the software is on GitHub.
Can he somehow prove to users that www.s3auth.com actually uses the exact codebase on Github?
Short answer
In the general case: No, without a complete and external audit of the software, hardware and network infrastructure during a specific period of time
Explanation
Ensure that a sofware is according an specification it is not at all a trivial task. Note that even the requirement actually uses the exact codebase on Github is not clear:
- Includes any part of the repository
- Includes a full tag
- Includes a full tag at a point of time
- Includes a full tag at a point of time and uses some functionality
- Includes a full tag at a point in time and uses a significant part of the functionality
- Includes a full tag at a point in time, uses a significant portion of the functionality, and there is no additional function that substantially modifies the behavior
- Includes a full tag at a point of time, uses a significant part of the functionality, and there is no additional function
- etc
An auditor should check:
the code to ensure that the requirement is acomplished
the build process to verify that the deliverable is the expected and does not include or remove parts
The hardware infraestructure to ensure the software is deployed, not altered an used as is
The network infraestructure to verify the deployed version is really the same that the users are getting
Any change on the code or infraestructure will invalidate the audit results
The auditor should be external to ensure independence and should in turn be audited by a regulatory body that certifies that it is capable of performing the process
I think I am beating around the bush. .I want to illustrate that assert that a software meets a specification it is difficult, expensive, and sometimes not useful. Of course, this process it is not needed if both parties agree on something simpler
This kind of audits exists in the real world, especially in the world of security. For example FIPS 140 or Common Criteria evaluations certifies that Hardware Security Modules or even software packages meets some security requirements. I know also some trusted certifiers that prove that a site shows a specific content at a point of time (usually applied to e-goverment)

Epicor Newbie looking for direction

I am an Epicor and Crystal Reports Newbie. I have started working with these programs a month ago, when I was hired. I am still trying to figure out how you know whether you are trying to customize a BAQ, Dashboard, etc. How to know where/when to make a new BOM report and such. If anyone out there has some tips, I would greatly appreciate it. I feel slightly intimidated by the program but am also determined to learn my way through it.
Thanks!
Toohey! Welcome to the world of Epicor!
Although I'm sure in the past couple of months you have learned the ropes, here are some extra tips to keep you moving forward:
That is not part of the system functionality
In order to keep costs under control, err on the side of not making system customizations to meet all user requests. You will quickly see that adding a quick field as a customization to a form isn't just the 5 minute change it seems like. You will soon be creating several custom reports and dashboards to report off of this field, and the cost of the change soon outweighs the benefit in many situations. As you become more familiar with this, try to balance ROI against the high cost of Epicor system customizations. It is best to lead with "that is not part of the system functionality", and when they push the issue, treat even small changes as controlled projects.
BAQ and Report Changes
Inevitably, you will need to customize the system's BAQs and Reports to meet your business needs because the standard system isn't designed exactly for your business.
Epicor has standard BAQs that start with 'z' and many reports. You should avoid editing the stock BAQs and reports, because they will be overwritten with each patch of Epicor. Instead, copy the standard distribution BAQs and rename the copies using your company initials as a prefix. Similarly, you want to create a custom reports folder separate (or within) the standard reports folder where you place all of your modified reports. You can then link the menu to the BAQ Report or Report Data Definition, and link the report style to the location of your new custom report on the server.
Customizations
Maintenance of customizations has a high long-term cost if you do not have in-house developers. A critical piece of advice here is to make sure all of the code, be it in C# or VB, is thoroughly commented. Even if you're generating code with a wizard, do yourself a favor and put a standard header into the script of every customization that includes the first date of the customization, when it was modified, and detail everything that was changed (especially if the change was a property change or a field addition that does not clearly appear in the script). Customizations have been known to fail for unexplained reasons, or create bad script that is not editable through the standard Epicor interface, and there may come a time when you have to rebuild the customization from scratch using only this change log and things you can clearly see in the form. You should save your customizations with some obvious standard naming convention (something like ORDER_ENTRY_CSR_YYMMDD), and make sure you update all menus to reflect the newest customization for the purpose you're using it. We also export our customizations for archival, just in case something should happen. Another note here is if you do not increment the customization name on a change and then update the menu items, users will still be use locally cached versions of the page until they clear their client cache. So, I always recommend incrementing. Another note on customizations and every custom exportable object in Epicor is to do yourself a favor and export them to either a source control system or a file repository so that after you deploy a faulty customization, rolling back to the previous version is quick and painless.
BPM Directives
As you're probably aware by now, BPM directives are powerful tools which can be used to update tables and prevent users from making terrible business decisions. A note on these is similar to customizations - comment comment comment!
Consultant Use
If you are using external consultants to create BPMs or Customizations, mandate distribution of commented source code that can be understood internally by one of your team members.
I hope this helps!
Source: 4 yrs experience as an Epicor ERP programmer
I would like to add that you should develop any Customization, BPM or Baq/Dashboard in the test system because any error on a solution can stop users from perform their job. Also, you can use a powerful tool called tracing options that helps you to recognize where to place the BPM directives. Further more there is a huge Epicor forum where you can post questions and a comunity of consultants , developers and users will answer your questions, and advise you about best Epicor practices, and it is completely free. You need to register on it; this is the link www.e10help.com.

Additional Info For Some Users

I am looking to add some additional content to users that should be required for users of type X
example: Sales Associate's
require: Profile Picture
just breaking into Orchard, i have done some looking for something like this just no luck so far.
THANK YOU IN ADVANCE
Every user in Orchard is of type User - there is no distinction. So you may approach the problem twofold:
Create your own content types to describe various users. By default there is one type in Orchard that describes a user - "User".
In order to make it work you'd need to write your own version of Orchard.Users module that would take that information into account. It may be quite a bit of work though as you'd need to override any piece of functionality that's there that uses the hardcoded "User" type. Best and cleanest solution, but also the most complex.
Use a single content part attached to "User" type, similar to how the profile modules (eg. Contrib.Profile) work. The distinction between different user types can be done on the driver level. You're free to return different content for a given part, based on some custom logic (eg. the stored value describing "user type"). Lot less flexibility than the first approach (all other parts attached to a user will be shared by everyone), but also lot less coding.

Tool to Support Advanced Search

I am not quite sure how to ask this and if my title is correct. Please edit this question if seen fit.
Redmine has a feature where user can filter certain user defined parameters when performing search:
I would like to know if there is a term for this kind of feature so I can research more regarding this. I'd also like to know if there are existing technologies (i.e. frameworks/cms/plugin) that support this kind of feature. I want to reuse exising technologies if possible and at the same time have this kind of search feature.
My requirements are similar to that of Redmine. That is, instead of Issues, I search Users and the attributes related to that user. The requirements are as follows:
I can add a user, specify the attributes related to this user.
Perform a search on the user and specify the parameters where to the search the user.
My guess is that there is no real term for this, beyond "advanced search"; unfortunately these functions range from simple to mind-bogglingly advanced.

how to maintain multiple components for multiple client for multiple features?

Basically my project is product based.
Once we developed a project and catch the multiple client and deploy the application based on their needs.
But We decided to put the new features and project dependent modules are as component.
Now my application got many number of customer.
Every customer needs a different features based on the component.
But we have centralized component for all client . we move the components additional feature to client specific folder and deploy.
My problem is , I am unable maintain the components features for multiple client.
My component feature code is increased and I am unable to track the client features.
Is there any solution for maintaining the multiple component features for multiple client ?
I've worked for a couple of companies in a similar space - product software but very heavily customised.
Essentially there is a decision the company needs to make - are you a product company (that is you ship broadly the same to every client) or are you a bespoke company. At the moment it sounds like they're between two stools and wanting the economies of being a product company with the ability to meet specific client demands the way a bespoke software company can.
Assuming the company wants to be a product software company, unless there are specific technical reasons why you can't, you need to move to a single code base with the modifications for each customer being handled through customisable options (i.e. flags saying how this particular situation is being handled, whether this feature is available and so on).
These can be set at run time (so they can be changed as the client wants - think options in Word or Excel), or build time (so code is included / excluded when you do the build), but the key things is that every client has to be pulled from the same code base.
But this needs to be agreed with the business as it limits what they can sell - every change they sell has to fit into an overall vision which can be accommodated by the single product.
The alternative is that you're essentially producing bespoke software for each client (that is coded specifically for what they want) but using many common libraries. That's fine and allows you to produce something which is exactly what they want but in the end it is going to be more work and the business needs to understand and cost for that.
We actually do a bit of both - there is a server product which is identical for all clients, and then web and mobile clients which are specific to them (in the case of mobile you can't have lots of dead code on the device - the web stuff is historic and will be moving to a standard product for all clients).
Good luck though, it's a difficult problem with no easy solution.
You are essentially talking about software product lines (SPLs): variations from a common base. Since you already package your features as components, you need a specialized tool to manage such variations.
You can then build a complete custom application based on a configuration that is unique to any given customer. Easier said than done, of course.
A model-driven software development(MDSD) approach can help a lot on this task. One such system that can support this development setup is ABSE, an emerging MDSD approach that among other things, can implement a software product line (info at http://www.abse.info - Disclaimer: I am the ABSE project lead). There is no product yet though. An alpha preview is coming.
Again, I know some companies that, using an MDSD coupled with code generation, have achieved what I understand you want: products that are half pre-packaged, half custom.