Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
I am still visiting school and will finish my exams next year. Since two years I am working as (the only :-( ) in-house dev for a company providing financial services to Laboratories and doctors. After spending the first year fixing their existing Application and realizing, communicating and agreeing that it won't meet future requirements i rewrote it from scratch. This is my first LOB application.
I needed a "IEnumerable.ToDataTable()" method to do simplify certain things in the Application. I realized that existing solutions wouldn't meet my performance and flexibility requirements, so i came up with a solution based on Dynamically injected IL code myself.
I thought that this might be a good way to contribute to the community, thats why i asked my employer if i may take some of those code and release it under LGPL. They agreed and that's where my first project is:
ModelShredder
Since this is my first OSS project and i am relatively unexperienced with running an OSS project on my own I am asking you for some "best-pratices" and what i can improve on it.
First read this book:
You can download it free of charge here: http://producingoss.com/ There are also some nice screencasts there that may be some use too.
It covers everything you need to know about looking for, contributing to, starting and maintaining an open source project,
It all depends on if you're going to have a team help you or not. It'll be simpler to start doing it yourself if you have the time if for no other reason than you can work out how you want to proceed without worrying about politics.
For a start, any code used as a framework or a library typically needs to be developed to a much higher standard than what you might write for an internal application. This means you need:
Sufficient user and developer docuemtnation;
Unit tests with decent coverage;
A license;
Tagged versions in source control; and
Released binaries and source code with checksums.
Additionally you'll need a method of:
Communicating your project status (release notes, goals, etc); and
A means to allow people to raise and track issues.
Google Code (as just one example) can do pretty much all of this for you.
I would also suggest you register the domain name for your project (typically projectname.org for open source). If the one you want is taken already, you may want to change the project name, particularly as there might be cause for confusion.
The google code pages look pretty good to me. You might want to think about adding a support group on Google Groups.
Related
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
Edit - [Solved]
So recently I have been learning how in integrate MySql Database to Visual C so I tryed finding the documentation to better understand each line of code. I ended up finding its on the MySql website but does not go into much detail.
I then found out through other users questions that some/most of the methods used are actaully inherited from a base interface/class
Example: IDataReader - is the base class
Then programs would inherit from it then make things such as XmlReader and MySqlDataReader
Which can be found here
https://msdn.microsoft.com/en-us/library/system.data.idatareader.aspx
Now here is where my questions starts
How would I have known/figured out where to start looking? If someone did not link me to the exact URL spot how would I have navigated microsofts site to find it in the first place?
What is a ".NET framework" and how would I have known that integrating a database would use it? - It says its Window Based so does that mean different operating system have there own ".Net framework"?
Is it safe to assume if we are trying to combine different applications together they have to have something binding them together hence need of ".Net framework"
MSDN (Microsoft Developer Network) is the umbrella in which all (or at least very most) Microsoft documentation lies. However, this is a huge conglomeration of information, and navigating it is not really an easy thing to give step-by-step instructions for, or even a general overall approach.
What you're facing is a large part "general learning curve", and the other part is a skillset for finding answers, usually starting with google and often ending at StackOverflow or MSDN or various blogs. In time, as the skill grows (and it is very much a skill), you will learn to be skeptical of articles based on various clues, and learn to tell upon reading them whether the author really knew what they were doing (Microsoft's articles themselves aren't without some measure of this variance in quality). Some sites become known as "stay away, they teach bad practices"
"Google-Fu" is an unofficial term that some people use to describe how well they can coerce google into returning relevant information. Often times it's easy, and often times it's quite difficult.
In short, there's no clear answer. Research is a skill to be honed, not unlike programming itself. Start as you are and keep pushing forward, and eventually you'll get a feel for it and get good at it.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
Referring to this question that's already been answer:
"What is the best local-database solution for WPF applications?"
What is currently my best choice of local database for my program? Currently I am using XML that is automatically created on the computer when the user run my executable for the first time or when the XML is missing.
I am perfectly fine on using XMLs, users of my application would not be required to install any software other than my application and I can do exactly with it, but my problem is with searching.
My application includes a database (the XML) of all their songs in their music library, and of course each track has its own information and search through each track is really slow! since it's a music library, one user can have at least 1000 tracks or more and searching through it is really really terrible.
I am familiar on using SQL database, (i don't know the proper term for it) but one for online database, I use XAMPP and read the database on a website on PHP. And i really like it. So..
Basically, I am looking for a good local-database solution, where user's won't to download and install any other software (but I am okay, if i would have to include a certain dll to my exe in other to run), and also one that is lightweight and fast in terms of searching.
Yes, i've read the included related question as many times as i could for me to understand it myself but i hope someone can explain the advantages and disad of each of them.
No, i am not looking for one that needs to have a server or something in order for it to work
Previous suggestion is correct SQLite will be your best option because WPF operates .NET Framework. It also supports ODBC driver as i recall
I was going to just comment but can't quite yet.
I wouldn't say there's necessarily a 'best' in most cases. In general whatever you go with is unlikely to be that bad of a choice..
Having said that, I could suggest SQLite as an option for you. Lightweight, very fast, certainly good for strictly local-database options.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 5 years ago.
Improve this question
I am about to break a monolithic WPF/C# application into manageable modules. Please let me know what are the points i need to remember before breaking the software. Any tools that would be handy,etc.
Thanks in advance.
Regards,
JOhn.
Depending on your tool set there are a couple of things which generally help when analyzing a code base from an architectural or structural viewpoint.
In VS 2010 Ultimate or with a tool like nDepend you can generate dependency graphs which help you see you application's dependencies and code usage can be useful when trying to break large code into smaller api's or services.
Also unit tests and integration tests can help ensure that functionality is maintained without introducing bugs and using refactoring tools like resharper, justCode or coderush can really help to adjust your namespaces, code file physical locations and class/method signatures when dealing with a large codebases into smaller more manageable libraries and projects.
On the planning side you really need to establish the key elements of the application from a separation of concerns point of view to define the boundaries of each module.
Probably the worst thing you can do though is just launch in and start hacking the code into chunks. Mapping out a phased migration for one module at a time would be my strategy of choice.
Agree with the above comment though that the question is too broad to get any meaningful answers.
Your question is very broad as there are many techniques (e.g. heavily unit testing your code) that are of help. It is probably best to read a book on that topic. I can highly recommend you Michael C. Feathers
Working Effectively with Legacy Code
Although this book is mostly Java-centric the described techniques are generally applicable. It will definitely change the way you write and think about code and will be of help when working with existing applications.
Feathers' book is also one of the books that are most recommended in this SO post.
To complete Mac answer on tooling such as NDepend (Disclaimer: I am a developer of the tool NDepend) I'd advise to read these 2 white books on how to partition your code in assemblies, layers and components. This is certainly the key to break your monolithic code base.
Partitioning code base through .NET assemblies and Visual Studio projects (8 pages)
Defining .NET Components with Namespaces (7 pages)
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
I'm developing a .Net class library (a data provider) and I'm starting to think about how I would handle licensing the library to prospective purchasers. By licensing, I mean the mechanics of trying to prevent my library from being used by those who haven't purchased it, not the software license (i.e., Apache, Gnu, etc).
I've never dealt with licensing, and in the past, I've always developed apps, not libraries. I don't want to make things difficult for my customers; know it is not possible to make it ironclad. Just some mechanism that gives me decent protection without making the customer jump through hoops or gnash their teeth.
I think the mechanism would check for a valid license when the class is being used in development mode, and not in runtime mode (when the customer's software is released to their customers). I think libraries are typically sold per developer, but I'm not sure how that could be accomplished without making the mechanism odious for my customers; maybe that gets left to the honor system.
I Googled this and found many approaches. Ideally, I'd like to do something that is generally accepted and common, the "right" way class libraries are licensed, if that exists, rather than making my customers deal with yet another license mechanism. A firm push in the right direction will be greatly appreciated!
This is the .NET supplied solution
http://www.ddj.com/web-development/184416695
When your client instantiates your class library, you would in your constructor code check for licensing. If the vendor does not have a valid/missing license, then you can throw a licensing exception. This would prevent someone from using your class/library. You should only do this once such that if the licensing is valid in one class, all your other classes would skip the licensing check.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
A couple of months ago I've coded a tiny tool that we needed at work for a specific task, and I've decided to share it on CodePlex. It's written in C# and honestly it's not big deal but since it's the first project I've ever built from scratch in that language and with the goal of opening it from the very beginning, one ends getting sort of emotionally attached to it, I mean you'd wish that the people will actually participate, be it criticism, bug reporting, or what have you.
So my question is, what can I do to actually encourage participation, stimulate curiosity or just recieve more feedback about it?
By the way this is the project I'm talking about: http://www.codeplex.com/winxmlcook/
You should:
Promote it where you think it would be relevant (forums,mailing lists etc.). Try not to spam though - it will create a backlash.
continue to provide updates as to create the appearance of an active project until more people pick it up.
Find project leaders, they are the sort of contributors that encourage others to contribute as well.
Blog about it and link to relevant blogs (creating ping-backs). Also leave comments at relevant blog posts.
Basically, your generic Internet marketing tactics ;)
You first have to acquire users by marketing the tool. Once you have users, that naturally means you'll start getting feedback.
One thing I noticed is your project description doesn't sell the project well. For example, type "winxmlcook" into Google, what gets shown is your project description but it's not likely to get someone to click on it.
I know I sound like a broken record constantly posting this book, but just about everything you could ever need to know about running an open source project is here. In particular, pay attention to these two chapters:
Getting Started
Managing Volunteers